package types

import (
	"database/sql"
	"os"

	"gorm.io/gorm"
)

// 爬虫表扩展字段
type SpateInfo struct {
	TaskId      string       `gorm:"column:task_id;type:varchar(32)"`        //抓取时的任务id,用于区分不同的抓取任务
	Spate       Spate        `gorm:"column:spate;type:tinyint(1);default:0"` //抓取状态
	SpiderCount int          `gorm:"column:scount;default:0"`                //爬虫抓取次数
	SpiderTime  sql.NullTime `gorm:"column:stime;type:datetime(0)"`          //爬虫抓取时间
}

// GORM 钩子，用于在创建记录前设置任务id时间
func (basic *SpateInfo) BeforeCreate(tx *gorm.DB) (err error) {

	//任务id
	if basic.TaskId == "" {
		basic.TaskId = getCrawlabTaskId()
	}

	return nil
}

// GORM 钩子，用于在更新记录前设置任务id时间
func (basic *SpateInfo) BeforeUpdate(tx *gorm.DB) (err error) {

	//任务id
	if basic.TaskId == "" {
		basic.TaskId = getCrawlabTaskId()

	}

	return nil
}

func getCrawlabTaskId() string {
	id := os.Getenv("CRAWLAB_TASK_ID")
	return id

}
